import { session } from 'js/util'
import { apiSerachGoods } from 'js/api'

export default {
  state: {
    param: $.extend({}, {
      // 搜索类型 goods：商品 store：店铺 goodsBrand：品牌
      searchType: 'goods',
      // 商品的搜索关键字
      keyWord: '',
      // 品牌名称
      brandName: '',
      // 商品最低价
      goodsCurrentPriceFloor: '',
      // 商品最高价
      goodsCurrentPriceCeiling: '',
      // 商家id
      storeId: '',
      // 商家所在地
      storeArea: '',
      // 主营行业
      mainIndustry: '',
      // 最低年销售额
      yearSalesFloor: '',
      // 最高年销售额
      yearSalesCeiling: '',
      // 一级分类ID
      gcIdFirst: '',
      // 二级分类ID
      gcIdSecond: '',
      // 三级分类ID
      gcIdThird: '',
      // 综合（条件字段）
      colligate: '',
      // 按那个字段排序
      orderBy: '',
      // 排序顺序
      orderType: 'desc'
    }, (session.get('searchParams') || {})),
    classify: [],
    currentPage: 1,
    totalPage: 0,
    totalCount: 0,
    allSearchResult: ''
  },
  getters: {
    goodsKeyWords: state => state.param.keyWord,
    bannerKeyWords: state => state.param.keyWord,
    param: state => state.param,
    currentPage: state => state.currentPage,
    totalPage: state => state.totalPage,
    totalCount: state => state.totalCount,
    allSearchResult: state => state.allSearchResult,
    classify: state => state.classify
  },
  actions: {
    // 获取商品搜索列表
    fetchSerachGoods({ state }) {
      // 清空商品搜索结果
      state.allSearchResult = []

      // 清空商品分类
      state.classify = []

      // 请求接口
      apiSerachGoods(state.param).then((data) => {
        // 搜索结果
        state.allSearchResult = data.luceneList

        // 当前页
        state.currentPage = data.currentPage

        // 总页码
        state.totalPage = data.totalPage

        // 总数量
        state.totalCount = data.totalCount

        // 商品分类
        state.classify = data.goodsPropertyList
      })
    }
  },
  mutations: {
    /**
     * 更新共享对象池的参数
     *
     * @param  { Object } state   当前操作的共享对象
     * @param  { Object } payload 传入参数
     */
    updateparam(state, payload) {
      // 如果没有传值过去，则不操作
      if (!payload) {
        return
      }

      // 合并对象
      $.extend(true, state.param, payload)

      // 将数据放到sessionstorage中
      session.set('searchParams', state.param)
    },

    /**
     * 重置参数
     *
     * @param  { Object } state 状态
     */
    resetParam(state) {
      state.param = {
        // 搜索类型 goods：商品 store：店铺 goodsBrand：品牌
        searchType: 'goods',
        // 商品的搜索关键字
        keyWord: '',
        // 品牌名称
        brandName: '',
        // 当前页
        currentPage: 1,
        // 每页多少条
        showCount: 20,
        // 商品最低价
        goodsCurrentPriceFloor: '',
        // 商品最高价
        goodsCurrentPriceCeiling: '',
        // 商家id
        storeId: '',
        // 商家所在地
        storeArea: '',
        // 主营行业
        mainIndustry: '',
        // 最低年销售额
        yearSalesFloor: '',
        // 最高年销售额
        yearSalesCeiling: '',
        // 一级分类ID
        gcIdFirst: '',
        // 二级分类ID
        gcIdSecond: '',
        // 三级分类ID
        gcIdThird: '',
        // 综合（条件字段）
        colligate: '',
        // 按那个字段排序
        orderBy: '',
        // 排序顺序
        orderType: ''
      }
    }
  }
}